/**  
* @author renbangjie renbangjie@126.com  
* @date 2015年12月19日 上午11:43:50
* @version V1.0  
*  
*/
package com.ai.common.core.mapper;

import java.util.List;

import com.ai.common.core.base.DTO;

/**
 * Mapper基类
* @author renbangjie renbangjie@126.com
* @date 2015年12月19日 上午11:43:50
*/
public interface Mapper<T> {

	/**
	 * 根据主键查询
	* @date 2015年12月19日 上午10:41:12
	* @param primaryKey
	* @return
	* @throws Exception
	* T
	 */
	public T getByPrimaryKey(Object primaryKey) throws Exception;
	
	/**
	 * 条件查询一条数据，如果有多条取第一条
	* @date 2015年12月19日 上午10:42:55
	* @param vo
	* @return
	* @throws Exception
	* T
	 */
	public T getOne(DTO dto) throws Exception;
	
	/**
	 * 查询一个集合
	* @date 2015年12月19日 上午10:43:56
	* @param vo
	* @return
	* @throws Exception
	* List<T>
	 */
	public List<T> getList(DTO dto) throws Exception;
	
	/**
	 * 查询总数
	* @date 2015年12月19日 上午10:55:35
	* @param paramMap
	* @return
	* @throws Exception
	* int
	 */
	public int getListCount(DTO dto) throws Exception;
	
	/**
	 * 插入新数据，返回受影响行数
	* @date 2015年12月19日 上午10:45:06
	* @param model
	* @return
	* @throws Exception
	* int
	 */
	public int insert(T model) throws Exception;
	
	/**
	 * 批量插入多条数据,返回受影响行数
	* @date 2015年12月19日 上午10:46:05
	* @param list
	* @return
	* @throws Exception
	* int
	 */
	public int insertBatch(List<T> list) throws Exception;
	
	/**
	 * 更新,更新条件为主键，返回受影响行数
	* @date 2015年12月19日 上午10:47:23
	* @param model
	* @return
	* @throws Exception
	* int
	 */
	public int updateByPrimaryKey(T model) throws Exception;
	
	/**
	 * 根据主键删除，返回受影响行数
	* @date 2015年12月19日 上午10:51:43
	* @param primaryKey
	* @return
	* @throws Exception
	* int
	 */
	public int deleteByPrimaryKey(Object primaryKey) throws Exception;
	
	/**
	 * 插入新数据，返回新model
	* @date 2015年12月19日 上午10:45:06
	* @param model
	* @return
	* @throws Exception
	* int
	 */
	public T insertmodel(T model) throws Exception;
}
